Glitch でアプリケーションを作成するとそのプロジェクトはノンベアな Git リポジトリとして作られます。その為、上手いことやればgit push後に更新内容を即反映させれます。
ローカルマシンの準備
まずはgit pushできるようにする必要があります。
Glitch でアプリケーションを作った後の下部メニューにある アプリケーションを作成Tools から確認できます。この URL がgit push先になります。
その URL がhttps://...@api.glitch.com/git/<アプリ名>のような場合、
git clone https://...@api.glitch.com/git/<アプリ名> --origin glitch
# リモート名を glitch としてクローンするで持ってくるか、既存のプロジェクトの場合はglitchというリモート URL 情報を追記します。
git remote add glitch https://...@api.glitch.com/git/<アプリ名>これでgit push glitch <branch>でgit pushコマンドは叩けるようになりました。
Glitch 側の準備
こちらは2つの準備が必要です。
ローカルから
git pushできるようにアプリ更新されるように
ローカルから git push できるように
今の状態ではまだ Glitch へgit pushできません。上記でも書いたとおりノンベアなリポジトリだからです。ちなみんこれは Glitch 上でmasterにいる場合masterへはgit pushできないことを意味します。
ですが、この制約は解除することが可能です。これには Glitch 側のコンソールに入りプロジェクトディレクトリの中で git config --add receive.denyCurrentBranch ignoreを実行します。
これでローカルからここへgit pushできるようになりました。
制約解除については、複数人で開発しているような場合に、履歴が狂わないようとの制約ですが、目的は単にアプリケーションを最新の状態にすることだけであって、コードの管理ではない為(それは GitHub などで行う)この制約は無くしても大丈夫だと考えます。
アプリ更新されるように
git pushされた後コードは更新されるはずですが、まだ完全ではありません。Glitch ではアプリケーションの更新にはターミナルでrefreshというコマンドを叩く必要があります。
この解決には Git フックのサーバーサイドフックであるpost-receiveフックを使います。これはgit pushされコードの更新などされた後に実行されるフックです。
Glitch ターミナルから.git/hooks/post-receiveファイルを以下のように書き換えます。
#!/bin/sh
cd /app;
git --git-dir=.git reset --hard
refreshこれは、
/appディレクトリ(リポジトリ)へ移動何故か差分があるので最新コードにリセット
refreshでアプリケーション更新
を行います。
最後にこのファイルへ実行権限を渡しておきます。
chmod +x .git/hooks/post-receive確認
うまく設定できれば、適当にgit push glitch ...後に一連のフローでアプリケーションが更新されるはずです。